//引入第三方包 express
var express = require('express');

//实例化express
var app = express()

//设置静态资源托管文件夹
//app.use() 注册中间件
//express.static() express内置的一个静态资源托管的中间件
app.use( express.static('static') );

//在所有接口前设置 处理post请求参数的中间件
app.use( express.json() );
app.use( express.urlencoded({extended:false}) );
 //定义返回给客户端的数值
 var arr = [
    { email: "1788888@qq.com", name: '张伟', phone: '13994891021', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: "1788888@qq.com", name: '李煜', phone: '13994891022', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: "1788888@qq.com", name: '李清照', phone: '13994891023', pass: '1234', ingroup: '编辑组', isadmin: true, status: false }
]

//设置接口
app.get('/user/list', (req, res) => {
console.log('服务端收到了请求');
//console.log( req.query );
var { page, count } = req.query
console.log(page, count);
//req 请求对象  包含了和本次请求相关的所有信息(请求地址，请求方式，携带参数)
//分页返回
var newArr = arr.slice((page-1)*count,page*count)
//res 响应对象  可以借助res向客户端返回信息(字符串，json格式数据，网页)

res.send({ code: 200, msg: '请求成功' ,list:newArr})//向客户端返回消息
})
//模糊搜索
app.get('/user/search',(req,res)=>{
var {searchkey} = req.query
// 根据传过来的参数  从用户  name属性中进行过滤
var arr1 =  arr.filter((item)=>{
    //return item.name.indexOf(searchkey) != -1  //indexOf  返回的是下标  没找到返回-1
    return item.name.includes(searchkey) == true //本身返回就是  true 和 false  不用 写==
    //return new RegExp(searchkey).test(item.name)  正则的方法
})
res.send({code:200,msg:'查询成功',list:arr1})
})

// post接受参数需要设置中间件
app.use(exp.json())
app.use(exp.urlencoded({ extended: false }))
//app.post()
// 登录查询
app.post( '/user/login', (req,res)=>{

//想要接收post类型请求的参数 必须提前设置能解析post请求参数的中间件 express.json 和 express.urlencoded 
var {phone,pass} = req.body;

//用来自客户端的数据 做判断, 判断是否在服务端的用户列表中
var i = arr.findIndex((item,index)=>{
    return item.phone == phone && item.pass == pass;
})

//如果i不是-1, 说明来自客户端的数据是合法的.
if( i != -1 ){
    //登陆成功时, 可以一并返回 登陆成功的用户信息,登陆令牌
    res.send( {code:200, msg:'登陆成功!',userinfo: arr[i], token:'' } );
}else{
    res.send( {code:400, msg:'登陆失败!'} );
}
} )
// 设置监听
app.listen(8080, () => {
console.log('服务器运行');
})